//
//  HMMainViewController.swift
//  Weibo
//
//  Created by teacher on 2017/6/4.
//  Copyright © 2017年 teacher. All rights reserved.
//

import UIKit
import SVProgressHUD

//  根视图控制器
class HMMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //  添加子视图控制器方式1
//        viewControllers = []
        //  添加子视图控制器方式2
//        addChildViewController(<#T##childController: UIViewController##UIViewController#>)
        
        let hmTabBar = HMTabBar()
        
        //  设置设置代理
        hmTabBar.hmDelegate = self
        //  设置点击撰写按钮执行的闭包
        hmTabBar.composeCallBack = { [unowned self] in
          
            if !HMUserAccountViewModel.sharedViewModel.isLogin {
                SVProgressHUD.showInfo(withStatus: "请先登录，亲~")
                return
            }
            //  代码执行到此表示登录成功
            let composeView = HMComposeView()
            composeView.show(target: self)
//            //  获取window
//            let window = UIApplication.shared.keyWindow
//            //  添加子视图
//            window?.addSubview(composeView)
            
        }
        
        
        //  设置自定义tabbar
        //  使用kvc可以oc里的只读属性赋值，可以给私有成员成员变量赋值
        self.setValue(hmTabBar, forKey: "tabBar")
//        self.tabBar = hmTabBar
        
        addChildViewController(childController: HMHomeTableViewController(), title: "首页", imageName: "tabbar_home")
        addChildViewController(childController: HMMessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        addChildViewController(childController: HMDiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        addChildViewController(childController: HMMeTableViewController(), title: "我的", imageName: "tabbar_profile")
        
    }
    
    //  重载添加子视图控制的的方法
    func addChildViewController(childController: UIViewController, title: String, imageName: String) {
        //  这句代码同意设置图片和文字颜色的，需要在appdelegate里面执行，因为越早执行越好
//        UITabBar.appearance().tintColor = UIColor.orange
        //  设置控制器的tabaritem的属性
        childController.tabBarItem.image = UIImage(named: imageName)
        //  设置图片使用原始方式渲染
        childController.tabBarItem.selectedImage = UIImage(named: "\(imageName)_selected")?.withRenderingMode(.alwaysOriginal)
        //  设置文字颜色的属性
        childController.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.orange], for: .selected)
        //  设置文字大小
        childController.tabBarItem.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 13)], for: .normal)
        
//        //  设置标题
//        childController.tabBarItem.title = title
//        //  设置导航栏标题
//        childController.navigationItem.title = title
        //  合并一句代码
        childController.title = title
        //  创建导航控制器
        let nav = HMNavigationController(rootViewController: childController)
        
        //  添加子视图控制器
        addChildViewController(nav)
        
    }
    
}


//  MARK:   --HMTabBarDelegate协议实现
extension HMMainViewController: HMTabBarDelegate {
    func composeOperation() {
        print("我是代理对象调用过来的")
    }
}
